package com.dynamicthreadpool.spi.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自适应扩展点注解
 * 从Dubbo 2.7版本提取
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Adaptive {

    /**
     * 确定从URL获取的key名，用于获取对应扩展点的名称，多个key则按照声明顺序依次尝试
     * <p>
     * 如果{@link #value()}为空，则使用接口名的点分隔小驼峰形式，例如：{@code com.alibaba.dubbo.rpc.Protocol} -> {@code protocol}
     * 
     * @return 获取扩展点名称的key列表
     */
    String[] value() default {};
}
